package com.fanfanwang.ffw.app;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.fanfanwang.ffw.app.base.BaseFragment;
import com.fanfanwang.ffw.app.bean.UserBean;
import com.fanfanwang.ffw.app.fragment.GlyHomeFragment;
import com.fanfanwang.ffw.app.fragment.GlyMessageFragment;
import com.fanfanwang.ffw.app.fragment.GlyMyFragment;
import com.fanfanwang.ffw.app.tenant.R;
import com.fanfanwang.ffw.app.tools.SharedPreferencesUtil;
/**
 * 主的Fragment
 */
public class GlyMainFragment extends BaseFragment implements OnClickListener{
	public static int showFragmentid=0;//用来记录当前显示的fragment是第几个。0表示第一个，1表示第二个，2表示第三个。
	/**
	 * 用于展示停车的Fragment
	 */
	private GlyHomeFragment homeFragment;
	/**
	 * 用于展示服务的Fragment
	 */
	private GlyMessageFragment mainMessageFragment;
	/**
	 * 用于展示我的的Fragment
	 */
	private GlyMyFragment mainMyFragment;
	/**
	 * 停车界面布局
	 */
	private View mainTingcheLayout;
	/**
	 * 服务界面布局
	 */
	private View mainServiceLayout;
	/**
	 * 我的界面布局
	 */
	private View mainMyLayout;
	/**
	 * 在Tab布局上显示停车图标的控件
	 */
	private ImageView tingcheImage;
	/**
	 * 在Tab布局上显示服务图标的控件
	 */
	private ImageView serviceImage;
	/**
	 * 在Tab布局上显示我的图标的控件
	 */
	private ImageView myImage;
	/**
	 * 在Tab布局上显示停车标题的控件
	 */
	private TextView tingcheText;
	/**
	 * 在Tab布局上显示服务标题的控件
	 */
	private TextView serviceText;
	/**
	 * 在Tab布局上显示我的标题的控件
	 */
	private TextView myText;
	/**
	 * 用于对Fragment进行管理
	 */
	private FragmentManager fragmentManager;
	private int lastIndex = 0;


	//	protected SetFragment mFragment;
	//	public static SlidingMenu sm =null;

	public static GlyMainFragment instance = null;
	
	private UserBean userBean;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
//		Bundle bundle=getArguments();
//		if(bundle!=null)
//		{
//			this.userBean=(UserBean) bundle.getSerializable("data");
//		}
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View v = inflater.inflate(R.layout.gly_fragment_main, container, false);
		initViews(v);
		return v;
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
	}

	/**
	 * 在这里获取到每个需要用到的控件的实例，并给它们我的好必要的点击事件。
	 */
	private void initViews(View view) {
		mainTingcheLayout = view.findViewById(R.id.tingche_layout);
		mainServiceLayout = view.findViewById(R.id.service_layout);
		mainMyLayout = view.findViewById(R.id.my_layout);
		tingcheImage = (ImageView) view.findViewById(R.id.tingche_image);
		serviceImage = (ImageView) view.findViewById(R.id.service_image);
		myImage = (ImageView) view.findViewById(R.id.my_image);
		tingcheText = (TextView) view.findViewById(R.id.tingche_text);
		serviceText = (TextView) view.findViewById(R.id.service_text);
		myText = (TextView) view.findViewById(R.id.my_text);
		mainTingcheLayout.setOnClickListener(this);
		mainServiceLayout.setOnClickListener(this);
		mainMyLayout.setOnClickListener(this);
		fragmentManager = getActivity().getSupportFragmentManager();
	}

	private void startService(){
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tingche_layout:
			// 当点击了停车tab时，选中第1个tab
			if(lastIndex != 0){
				lastIndex = 0;
				setTabSelection(0);
			}
			break;
		case R.id.service_layout:
			// 当点击了服务tab时，选中第2个tab
			if(lastIndex != 1){
				setTabSelection(1);
				lastIndex = 1;
			}
			break;
		case R.id.my_layout:
			// 当点击了我的tab时，选中第4个tab
			if(lastIndex != 2){
				setTabSelection(2);
				lastIndex = 2;
			}
			break;
		default:
			break;
		}
	}

	/**
	 * 根据传入的index参数来我的选中的tab页。
	 * 
	 * @param index
	 *            每个tab页对应的下标。0表示停车，1表示服务，2表示动态，3表示我的。
	 */
	public void setTabSelection(int index) {
		// 每次选中之前先清楚掉上次的选中状态
		clearSelection();
		// 开启一个Fragment事务
		FragmentTransaction transaction = fragmentManager.beginTransaction();
		// 先隐藏掉所有的Fragment，以防止有多个Fragment显示在界面上的情况
		hideFragments(transaction);
		switch (index) {
		case 0:
			showFragmentid=0;
			// 当点击了停车tab时，改变控件的图片和文字颜色
			tingcheImage.setImageResource(R.drawable.tingche_select);
			tingcheText.setTextColor(getResources().getColor(R.color.green));
			//			if (tingcheFragment == null) {
			// 如果tingcheFragment为空，则创建一个并添加到界面上
			//				mainTingcheFragment = MainTingcheFragment.getTingcheFragment(getActivity());
			//				transaction.add(R.id.content, tingcheFragment);
			if(!homeFragment.isAdded()){
				transaction.add(R.id.content, homeFragment);
				transaction.show(homeFragment);
			}else {
				transaction.show(homeFragment);
				transaction.hide(mainMessageFragment);
				transaction.hide(mainMyFragment);
			}
			break;
		case 1:
			showFragmentid=1;
			// 当点击了服务tab时，改变控件的图片和文字颜色
			serviceImage.setImageResource(R.drawable.service_selected);
			serviceText.setTextColor(getResources().getColor(R.color.green));
			// 如果serviceFragment为空，则创建一个并添加到界面上
			//			mainServiceFragment=MainServiceFragment.getServiceFragment(getActivity());
			if(!mainMessageFragment.isAdded()){
				transaction.add(R.id.content, mainMessageFragment);
				transaction.show(mainMessageFragment);
			}
			else {
				transaction.show(mainMessageFragment);
				transaction.hide(homeFragment);
				transaction.hide(mainMyFragment);
//				mainMessageFragment.igetMessageList.updateMessageList();
			}
			break;
		case 2:
			showFragmentid=2;
			// 当点击了动态tab时，改变控件的图片和文字颜色
			myImage.setImageResource(R.drawable.my_selected);
			myText.setTextColor(getResources().getColor(R.color.green));
			// 如果mainMyFragment为空，则创建一个并添加到界面上
			//			mainMyFragment = MainMyFragment.getMyFragment(getActivity());
			if(!mainMyFragment.isAdded()){
				transaction.add(R.id.content, mainMyFragment);
				transaction.show(mainMyFragment);
			}else {
				transaction.show(mainMyFragment);
				transaction.hide(mainMessageFragment);
				transaction.hide(homeFragment);
				
			}
			break;
		default:
			break;
		}
		transaction.commit();
	}

	/**
	 * 清除掉所有的选中状态。
	 */
	private void clearSelection() {
		tingcheImage.setImageResource(R.drawable.tingche_unselected);
		tingcheText.setTextColor(Color.parseColor("#82858b"));
		serviceImage.setImageResource(R.drawable.service_unselected);
		serviceText.setTextColor(Color.parseColor("#82858b"));
		myImage.setImageResource(R.drawable.my_unselected);
		myText.setTextColor(Color.parseColor("#82858b"));
	}

	/**
	 * 将所有的Fragment都置为隐藏状态。
	 * 
	 * @param transaction
	 *            用于对Fragment执行操作的事务
	 */
	private void hideFragments(FragmentTransaction transaction) {
		if (homeFragment != null) {
			transaction.hide(homeFragment);
		}
		if (mainMessageFragment != null) {
			transaction.hide(mainMessageFragment);
		}
		if (mainMyFragment != null) {
			transaction.hide(mainMyFragment);
		}
	}

	@Override
	public void initView(View view) {
		// TODO Auto-generated method stub

	}

	@Override
	public void initData() {
		// TODO Auto-generated method stub
//		Bundle bundle=new Bundle();
//		bundle.putSerializable("data", userBean);
		homeFragment = GlyHomeFragment.getHomeFragment(getActivity());
//		homeFragment.setArguments(bundle);
		mainMessageFragment=GlyMessageFragment.getServiceFragment(getActivity());
		mainMyFragment = GlyMyFragment.getGlyMyFragment(getActivity());
		//设置默认启动第几个页面
		setTabSelection(SharedPreferencesUtil.getInstance(getActivity()).getDefalutFragment());
		//这是更改一下，恢复默认值
		SharedPreferencesUtil.getInstance(getActivity()).putDefalutFragment(0);
		
		startService();
	}

	@Override
	public void setListener() {
		// TODO Auto-generated method stub

	}

	public static GlyMainFragment newInstance() {
		// TODO Auto-generated method stub
		if(instance == null){
			instance = new GlyMainFragment();
		}
	
		return instance;
	}
}
